﻿using JinYuan.Models;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace LargeSquareOne
{
    public partial class trw : UserControl
    {
        public trw()
        {
            InitializeComponent();
            IntValue();
        }


        #region 减少闪烁
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }
        #endregion


        private int subgroupSize = 5;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("设置或获取子组大小值")]
        public int SubgroupSize
        {
            get { return subgroupSize; }
            set
            {
                subgroupSize = value;
                listView1.Items[0].SubItems[3].Text = value.ToString();
                this.Invalidate();
            }
        }

        private double _uSLs = 0;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("设置或获取上规格值")]
        public double USLs
        {
            get { return _uSLs; }
            set
            {
                _uSLs = value;
                listView1.Items[2].SubItems[1].Text = value.ToString();
                this.Invalidate();
            }
        }

        private double _lSLs = 0;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("设置或获取下规格值")]
        public double LSLs
        {
            get { return _lSLs; }
            set
            {
                _lSLs = value;
                listView1.Items[2].SubItems[5].Text = value.ToString();
                this.Invalidate();
            }
        }

        private double _cpkPpkAcceptanceValue = 0;
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("设置或获取目标值")]
        public double CpkPpkAcceptanceValue
        {
            get { return _cpkPpkAcceptanceValue; }
            set
            {
                _cpkPpkAcceptanceValue = value;
                listView1.Items[2].SubItems[3].Text = value.ToString();
                this.Invalidate();
            }
        }


        private CPKModel _cPKData = new CPKModel();
        [Browsable(true)]
        [Category("自定义属性")]
        [Description("获取目标值")]
        public CPKModel CPKData
        {
            get { return _cPKData; }
            set
            {
                if (value != null)
                {
                    _cPKData = value;
                    //总样本数
                    listView1.Items[0].SubItems[1].Text = _cPKData.TotalNumber.ToString();
                    //平均值
                    listView1.Items[1].SubItems[1].Text = _cPKData.MeanVlaue.ToString();
                    //最大值
                    listView1.Items[1].SubItems[3].Text = _cPKData.MaxValue.ToString();
                    //最小值
                    listView1.Items[1].SubItems[5].Text = _cPKData.MinValue.ToString();
                    // 正的3倍标准差线
                    listView1.Items[3].SubItems[1].Text = _cPKData.Pos3Sigma.ToString();
                    // 负的3倍标准差线
                    listView1.Items[3].SubItems[3].Text = _cPKData.Neg3Sigma.ToString();

                    // 组内标准差值
                    listView2.Items[0].SubItems[1].Text = _cPKData.GroupSTDEV.ToString();
                    // 整体标准差值
                    listView2.Items[0].SubItems[2].Text = _cPKData.WholeSTDEV.ToString();

                    // 组内CPK值
                    listView2.Items[1].SubItems[1].Text = _cPKData.GroupCPK.ToString();
                    // 整体CPK值
                    listView2.Items[1].SubItems[2].Text = _cPKData.WholeCPK.ToString();
                    // 组内CP值
                    listView2.Items[2].SubItems[1].Text = _cPKData.GroupCP.ToString();
                    // 整体CP值
                    listView2.Items[2].SubItems[2].Text = _cPKData.WholeCP.ToString();

                    // 组内CPL值
                    listView2.Items[3].SubItems[1].Text = _cPKData.GroupCPL.ToString();
                    // 整体CPL值
                    listView2.Items[3].SubItems[2].Text = _cPKData.WholeCPL.ToString();
                    // 组内CPU值
                    listView2.Items[4].SubItems[1].Text = _cPKData.GroupCPU.ToString();
                    // 整体CPU值
                    listView2.Items[4].SubItems[2].Text = _cPKData.WholeCPU.ToString();

                    // 组内PPM<LSL值
                    listView2.Items[5].SubItems[1].Text = _cPKData.GroupPPM_LSL.ToString();
                    // 整体PPM<LSL值
                    listView2.Items[5].SubItems[2].Text = _cPKData.WholePPM_LSL.ToString();

                    // 组内PPM>USL值
                    listView2.Items[6].SubItems[1].Text = _cPKData.GroupPPM_USL.ToString();
                    // 整体PPM>USL值
                    listView2.Items[6].SubItems[2].Text = _cPKData.WholePPM_USL.ToString();

                    // 组内PPM Total值
                    listView2.Items[7].SubItems[1].Text = _cPKData.GroupPPM_Total.ToString();
                    // 整体PPMN Total值
                    listView2.Items[7].SubItems[2].Text = _cPKData.WholePPM_Total.ToString();

                    lbl_Ca.Text = _cPKData.CA.ToString();
                    this.Invalidate();
                }

            }
        }



        #region 初始化
        private void IntValue()
        {

            //listView2.OwnerDraw = true;
            //listView2.DrawColumnHeader += ListView2_DrawColumnHeader;

            listView1.Columns.Clear();
            listView2.Columns.Clear();

            // 假设ListView控件的名称为listView1
            // 添加列头
            listView1.Columns.Add("项目1", 80);
            listView1.Columns.Add("数值1", 90);
            listView1.Columns.Add("项目2", 80);
            listView1.Columns.Add("数值2", 90);
            listView1.Columns.Add("项目3", 80);
            listView1.Columns.Add("数值3", 95);

            // 创建一个ListViewItem对象，并将数据添加到指定单元格   0
            ListViewItem item1_1 = new ListViewItem("总样本数");
            item1_1.SubItems.Add("0");
            item1_1.SubItems.Add("子组大小");
            item1_1.SubItems.Add("0");
            item1_1.SubItems.Add("图标类型");
            item1_1.SubItems.Add("XR");
            listView1.Items.Add(item1_1);  // 添加完整的ListViewItem对象到ListView控件中的指定行索引


            // 如果需要添加多行数据，可以类似地重复上述步骤
            ListViewItem item1_2 = new ListViewItem("平均值"); //1
            item1_2.SubItems.Add("0");
            item1_2.SubItems.Add("最大值");
            item1_2.SubItems.Add("0");
            item1_2.SubItems.Add("最小值");
            item1_2.SubItems.Add("0");
            listView1.Items.Add(item1_2);

            ListViewItem item1_3 = new ListViewItem("上规格");  //2
            item1_3.SubItems.Add("0");
            item1_3.SubItems.Add("目标值");
            item1_3.SubItems.Add("0");
            item1_3.SubItems.Add("下规格");
            item1_3.SubItems.Add("0");
            listView1.Items.Add(item1_3);

            ListViewItem item1_4 = new ListViewItem("+3Sigma"); //3
            item1_4.SubItems.Add("0");
            item1_4.SubItems.Add("-3Sigma");
            item1_4.SubItems.Add("0");
            listView1.Items.Add(item1_4);




            // 假设ListView控件的名称为listView1
            // 添加列头
            listView2.Columns.Add("", 150);
            listView2.Columns.Add("组内", 120);
            listView2.Columns.Add("整体", 120);
            listView2.Columns.Add("实测", 128);

            // 创建一个ListViewItem对象，并将数据添加到指定单元格
            ListViewItem item2_1 = new ListViewItem("STDEV"); //0
            item2_1.SubItems.Add("0");
            item2_1.SubItems.Add("0");
            item2_1.SubItems.Add("");
            listView2.Items.Add(item2_1);  // 添加完整的ListViewItem对象到ListView控件中的指定行索引

            ListViewItem item2_2 = new ListViewItem("CPK"); //1
            item2_2.SubItems.Add("0");
            item2_2.SubItems.Add("0");
            item2_2.SubItems.Add("");
            listView2.Items.Add(item2_2);
            ListViewItem item2_3 = new ListViewItem("CP");//2
            item2_3.SubItems.Add("0");
            item2_3.SubItems.Add("0");
            item2_3.SubItems.Add("");
            listView2.Items.Add(item2_3);
            ListViewItem item2_4 = new ListViewItem("CPL");//3
            item2_4.SubItems.Add("0");
            item2_4.SubItems.Add("0");
            item2_4.SubItems.Add("");
            listView2.Items.Add(item2_4);
            ListViewItem item2_5 = new ListViewItem("CPU");//4
            item2_5.SubItems.Add("0");
            item2_5.SubItems.Add("0");
            item2_5.SubItems.Add("");
            listView2.Items.Add(item2_5);
            ListViewItem item2_6 = new ListViewItem("PPM<LSL");//5
            item2_6.SubItems.Add("0");
            item2_6.SubItems.Add("0");
            item2_6.SubItems.Add("0");
            listView2.Items.Add(item2_6);
            ListViewItem item2_7 = new ListViewItem("PPM>USL");//6
            item2_7.SubItems.Add("0");
            item2_7.SubItems.Add("0");
            item2_7.SubItems.Add("0");
            listView2.Items.Add(item2_7);
            ListViewItem item2_8 = new ListViewItem("PPM Total");//7
            item2_8.SubItems.Add("0");
            item2_8.SubItems.Add("0");
            item2_8.SubItems.Add("0");
            listView2.Items.Add(item2_8);

            lbl_Ca.Text = "0";
        }

        #endregion

        public void ListView2_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
        {
            e.DrawBackground();

            // 设置自定义的列标题栏背景颜色
            e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds);

            // 绘制列标题栏的文本
            e.DrawText();
        }
    }

}
